import App from "./App"
// #ifndef VUE3
import Vue from "vue"
import store from "@/store"
import api from "@/api"
import common from "@/utils/common"
import navBar from "@/components/navBar"
import back from "@/components/back"
import tab from "@/components/tab"
import loadMore from "@/components/loadMore"
Vue.prototype.$store = store
Vue.prototype[`$api`] = api

Vue.component("navBar", navBar)
Vue.component("back", back)
Vue.component("tab", tab)
Vue.component("loadMore", loadMore)
Object.keys(common).forEach(key => {
    Vue.prototype[`$${key}`] = common[key]
})

Vue.config.productionTip = false
App.mpType = "app"

try {
    function isPromise(obj) {
        return !!obj && (typeof obj === "object" || typeof obj === "function") && typeof obj.then === "function"
    }

    // 统一 vue2 API Promise 化返回格式与 vue3 保持一致
    uni.addInterceptor({
        returnValue(res) {
            if (!isPromise(res)) {
                return res
            }
            return new Promise((resolve, reject) => {
                res.then(res => {
                    if (res[0]) {
                        reject(res[0])
                    } else {
                        resolve(res[1])
                    }
                })
            })
        }
    })
} catch (error) {}

const app = new Vue({
    ...App
})
app.$mount()
// #endif

// #ifdef VUE3
import { createSSRApp } from "vue"
export function createApp() {
    const app = createSSRApp(App)
    return {
        app
    }
}
// #endif
